#!/bin/bash

user="root"
pwd="taosdata"
db="iot_ts"

# ------------------------------------------ 封装的函数 ------------------------------------------

function execute_sql(){
    local sql=$1
    taos -u "$user" "-p$pwd" -s "$sql"
}


#
# 删除多余的信息，用于处理 “TDengine 连接过程” 打印的内容
#
function process_connected(){
    sed '{
        /^failed to create dir/d      # 删除以 "failed to create dir" 开头的行
        /^Welcome to the TDengine/d   # 删除以 "Welcome to the TDengine" 开头的行
        /^Database changed/d          # 删除以 "Database changed" 开头的行
        /^Copyright/d                 # 删除以 "Copyright" 开头的行
        /^$/d                         # 删除空行
        /^taos>/d                     # 删除以 "taos>" 开头的行
        /^\r/d                        # 删除紧跟 "taos>" 后的回车符        
        /^Query OK/d                  # 删除以 "Query OK" 开头的行        
    }'    
}

#
# 删除多余的信息，用于处理 “查询一个数据库中有哪些超级表” 打印的内容
#
function process_list_super_tables(){
    sed '{
        /\s\+stable_name\s\+|/d       # 删除形如 "     stables_name     |" 的行
        /=\+/d                        # 删除形如 "=======================" 的行
        s/|\r//                       # 替换："|" --> ""        
    }'
}

#
# 删除多余的信息，用于处理 “查询一个超级表下有哪些子表” 打印的内容
#
function process_list_child_tables(){
    sed '{
        /\s\+table_name\s\+|/d        # 删除形如 "     table_name     |" 的行
        /=\+/d                        # 删除形如 "=====================" 的行
        s/|\r//                       # 替换："|" --> ""，注意："|" 后是跟了一个回车符的，使用 cat -A xxx.txt 可以看到不可见的控制字符
    }'
}

#
# 删除多余的信息，用于处理 “查询超级表建表语句” 打印的内容
#
function process_batch_show_create_super_table(){
    sed '{
        /^\*\+\s\+1.row\s\+\*\+/d                     # 删除形如 "******** 1.row ********" 的行
        /^\s\+Table:\s\{1\}/d                         # 替换："Table: " --> ""  
        s/Create Table: //                            # 替换："Create Table: " --> ""
        s/CREATE STABLE/CREATE STABLE IF NOT EXISTS/  # 替换："CREATE STABLE"  --> "CREATE STABLE IF NOT EXISTS"
        s/\r$//                                       # 删除行末的控制字符 "^M" 即回车（Carriage Return）
        s/$/&;/                                       # 每行行尾加分号 ";"
    }'
}

#
# 删除多余的信息，用于处理 “查询子表建表语句” 打印的内容
#
function process_batch_show_create_child_table(){
    sed '{
        /^\*\+\s\+1.row\s\+\*\+/d                     # 删除形如 "******** 1.row ********" 的行
        /^\s\+Table:\s\{1\}/d                         # 替换："Table: " --> ""  
        s/Create Table: //                            # 替换："Create Table: " --> ""
        s/CREATE TABLE/CREATE TABLE IF NOT EXISTS/    # 替换："CREATE TABLE"  --> "CREATE TABLE IF NOT EXISTS"
        s/\r$//                                       # 删除行末的控制字符 "^M" 即回车（Carriage Return）
        s/$/&;/                                       # 每行行尾加分号 ";"
    }'
}

sql="use test_ems_ts;"
sql="$sql show create stable gdata_meter_15min\G;"
sql="$sql show create stable gdata_meter_hour\G;"
sql="$sql show create stable gdata_meter_day\G;"
sql="$sql show create stable gdata_meter_month\G;"
sql="$sql show create stable gdata_meter_year\G;"

# execute_sql "$sql" | process_connected | process_batch_show_create_super_table > aaa.txt



arr=$(execute_sql "$sql" | process_connected | process_batch_show_create_super_table)
IFS_OLD="$IFS"
IFS=$'\n'

for sql in $arr
do
    echo "sql: $sql"
done

IF="$IFS_OLD"